
# 字典
"""
说明 ：
    1. 它是一个无序序列 ，不能通过索引获取
    2. 它也可以存放任意的键值对，键名一般都是字符，值可以是任意类型 。
    3. 它也是可变化对象 ，它也是支持增删改查

定义 ：
    变量名 = {key1:value1,key2:value2,...}
"""

# 1. 定义字典
dct = {}
dct1 = {'a':1,'b':2}
print(dct)
print(dct1)

# 2. 通过key获取值/修改值/增加值 : dict[key]
print("获取键名a的值：",dct1['a'])
# print("获取键名a的值：",dct1['c'])     # 若没有此键名，会报KeyError

# 修改键名对应的值
dct1['b'] = 19
print(dct1)

# 增加 ：
dct1['c'] = 20
print(dct1)

"""
字典中常见的方法 ：
get(key)        : 获取字典中key对应的值
key in dict     : key是否在字典中
items()         : 以列表的形式返回(键,值)数据
keys()          : 返回所有的键名
values()        : 返回所有的值
pop(key)        : 删除对应的键值对
update(dict1)   : 将字典dict1的数据更新到当前字典中。
"""

dct2 = {'a':1,'b':2,'c':'hello','d':[1,2,3]}
print("获取键名:d的值",dct2.get('d'))
print("获取键名:e的值",dct2.get('e'))

print("键名e是否在dct2中",'e' in dct2)

print("返回所有的键名:",dct2.keys())

for x in dct2.keys():
    print(x,end=" ")

print("返回所有值：",dct2.values())

for x in dct2.values():
    print(x,end=" ")

print("返回所有键值对",dct2.items())

for key,value in dct2.items():
    print(key,"===",value)

dct3 = {'x':'abc','t':None}

print("将字典dct3更新到字典dct2")
dct2.update(dct3)
print(dct2)

print("删除掉键值对d")
dct2.pop('d')
print(dct2)

# json格式
"""
1. 它的返回格式 ：{}
2. 它的键名是双引号引起来的 ，{"a":1}
3. 它是一种通用的格式，
4. json中的空使用null
5. json中的boolen类型为 true ,false
"""

login_result = {"status": 1, "msg": "登录成功",
                "result": {"user_id": 2649, "email": "", "password": "519475228fe35ad067744465c42a19b2", "paypwd": None,
                           "sex": 0, "birthday": 0, "user_money": "2939.00", "frozen_money": "0.00",
                           "distribut_money": "0.00", "underling_number": 0, "pay_points": 100, "address_id": 0,
                           "reg_time": 1686900284, "last_login": 1686900284, "last_ip": "", "qq": "",
                           "mobile": "13988888888", "mobile_validated": 1, "oauth": "", "openid": None, "unionid": None,
                           "head_pic": None, "province": 0, "city": 0, "district": 0, "email_validated": 0,
                           "nickname": "13988888888", "level": 1, "discount": "1.00", "total_amount": "5878.00",
                           "is_lock": 0, "is_distribut": 1, "first_leader": 0, "second_leader": 0, "third_leader": 0,
                           "token": "49a66b45323cac3236668b6ba34d0766", "message_mask": 63, "push_id": "0",
                           "distribut_level": 0, "level_name": "注册会员"}, "url": ""}

# 练习 ：
# 1. 获取msg的值，user_money的值，paypwd
print("获取msg的值:",login_result.get('msg'))
print("获取msg的值:",login_result['msg'])
print("获取user_money的值:",login_result.get('result').get('user_money'))
print("获取user_money的值:",login_result['result']['user_money'])

# 2. 设置一个qq的号
login_result['result']['qq'] = '872387276362367'
print(login_result.get('result').get('qq'))

# 3. result的结果进行循环显示
for key,value in login_result.items():
    print(key,'====',value)